package com.example.mutilinputbuttom;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**模拟手机或其他仪器输入键盘按键*/
public class MutilTextInputButton extends Button {
    /**文本输入模式*/
    public static final int INPUTMODE_TXT=0;
    /**数字输入模式*/
    public static final int INPUTMODE_NUM=1;
    /**输入修改时间，超过就不能修改*/
    public static final int INPUT_FINISH_TIME=1000;
    /**当前输入模式*/
    private int inputmode=INPUTMODE_TXT;
    /**显示 的TextView*/
    private TextView inputTextView=null;
    /**输入的文本候选项*/
    private String[] inputArray=null;
    /**输入的数字项*/
    private String numModeInput="0";
    /**按钮点击次数*/
    private int inputTimes=0;
    /**上次点击时间*/
    private long lastInputTime=0l;
    

    public MutilTextInputButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        regClickListener();
    }
    
    public MutilTextInputButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        regClickListener();
    }
    
    public MutilTextInputButton(Context context) {
        super(context);
        regClickListener();
    }
    
    public void setInputTextView(TextView tv){
        inputTextView=tv;
        inputTimes=0;
        lastInputTime=0l;
    }

    public void setInputMode(int inputmode){
        this.inputmode=inputmode;
        inputTimes=0;
        lastInputTime=0l;
    }
    
    public int getInputMode(){
        return inputmode;
    }
    
    public void setInputArray(String[] inputArray,int numModeInput){
        this.inputArray=inputArray;
        this.numModeInput=String.valueOf(numModeInput);
        setDisplayTxt();
    }
    /**设置按钮的文本*/
    private void setDisplayTxt(){
        if(inputArray!=null){
            String display="";
            for (int i = 0,len=inputArray.length; i <len; i++) {
                if(i!=0){
                    display+=",";
                }
                display+=inputArray[i];
            }
            setText(display+"("+numModeInput+")");
        }
    }
    
    /**注册监听器*/
    private void regClickListener(){
        setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                if(inputTextView!=null&&inputArray!=null){
                    String txt=inputTextView.getText().toString();
                    if(inputmode==INPUTMODE_NUM){
                        inputTextView.setText(txt+numModeInput);
                    }else{
                        inputTimes++;
                       if(System.currentTimeMillis()-lastInputTime<INPUT_FINISH_TIME){
                           String input=inputArray[inputTimes%inputArray.length];
                           txt=txt.substring(0,txt.length()-1);
                           inputTextView.setText(txt+input);
                       }else{
                           inputTextView.setText(txt+inputArray[0]);
                           inputTimes=0;
                       }
                       lastInputTime=System.currentTimeMillis();
                    }
                }
            }
        });
    }
    
}
